PHP解析字符串中的自定义字符

时间:2016-05-15 09:12:06

标签: php html regex string

我需要一个帮助来解析这些括号内的字符:

  1. []
  2. {}
  3. <>
  4. {|}
  5. <|>
  6. 例如,我有这个字符串变量(日语):

    $question = "この<部屋|へや>[に]{椅子|いす}[が]ありません";

    HTML中的预期结果:

    描述

    • 1)这是一个粒子。我会将[]内的所有字词转换为HTML标记。示例:[に]将转换为<span style="color:blue">に</span>。完整的句子可以有多个[]。注意:我了解如何使用str_replace。

    • 2和4)这是正常的汉字词,它将被用作用户的问题。完整句子只能有一个{}

    • 3和5)这是正常的汉字文本。完整的句子可以有多个{}

    • 2,3,4和5)它们将转换为Ruby html标签。有时他们没有|分隔符,这不是强制性的。据我所知,我只需要爆炸|个字符。如果爆炸返回false或|不存在,我将使用原始值。注意:我了解如何使用ruby标签(rb和rt)。

    我的问题

    如何使用PHP解析上面提到的字符1-5?我需要从哪个关键字开始?

    感谢。

1 个答案:

答案 0 :(得分:0)

感谢此页面:Capturing text between square brackets in PHP,现在我有了自己的答案。

完整代码:

<?php
$text = "この<部屋|へや>[に]{椅子|いす}[が]ありません";
preg_match_all("/\[([^\]]*)\]/", $text, $square_brackets); //[]
preg_match_all("/{([^}]*)}/", $text, $curly_brackets); //{}
preg_match_all("/<([^}]*)>/", $text, $angle_brackets); //<>

print_r($square_brackets);
echo "\r\n";
print_r($curly_brackets);
echo "\r\n";
print_r($angle_brackets);
echo "\r\n";

结果:

Array
(
    [0] => Array
        (
            [0] => [に]
            [1] => [が]
        )

    [1] => Array
        (
            [0] => に
            [1] => が
        )

)

Array
(
    [0] => Array
        (
            [0] => {椅子|いす}
        )

    [1] => Array
        (
            [0] => 椅子|いす
        )

)

Array
(
    [0] => Array
        (
            [0] => <部屋|へや>
        )

    [1] => Array
        (
            [0] => 部屋|へや
        )

)

感谢。