preg_replace 剪切字符串的第一个字母
preg_replace cuts first letter of the string
如果 class 使用 preg_replace
匹配以下表达式,我想将它添加到 <p>
。
以下代码会执行此操作,但它会删除字符串的第一个字母(rtl 语言)。注意单词 ہور
,第一个字符 ہ
被剪切。如何解决?
$str = "<p>para 1</p><p> ہور سنا کنجڑا </p><p>para3</p>";
$result = preg_replace("~\p{Arabic}~u", "<p class=\"foo\">", $str, 1);
echo $result;
//output
<p>para 1</p><p> <p class="foo">ور سنا کنجڑا </p><p>para3</p>
将找到的字符分组。
$str = "<p>para 1</p><p> ہور سنا کنجڑا </p><p>para3</p>";
$result = preg_replace("~(\p{Arabic})~u", "<p class=\"foo\">", $str, 1);
echo $result;
()
捕获找到的阿拉伯字符。
将其添加回替换字符串。
正则表达式演示:https://regex101.com/r/yN5vW3/1 vs. https://regex101.com/r/yN5vW3/2
PHP 演示:https://eval.in/537056
preg_replace()
不是 "cut" 字符串的第一个字母。它用您作为第二个参数传递给它的字符串替换它。这就是 preg_replace()
谋生的方式;它替换了字符串片段:-)
有几种方法可以告诉它你在做什么。例如,您可以在 replacement() 字符串中使用 sub-string that matches:
$result = preg_replace("~<p>(\p{Arabic})~u", '<p class="foo">', $str, 1);
或者您可以使用 assertion:
$result = preg_replace("~<p>(?=\p{Arabic})~u", '<p class="foo">', $str, 1);
无论如何,当段落包含阿拉伯语单词时,您可能需要将 <p>
替换为 <p class="foo">
。我上面建议的代码更改已经使用了这个假设。
如果 class 使用 preg_replace
匹配以下表达式,我想将它添加到 <p>
。
以下代码会执行此操作,但它会删除字符串的第一个字母(rtl 语言)。注意单词 ہور
,第一个字符 ہ
被剪切。如何解决?
$str = "<p>para 1</p><p> ہور سنا کنجڑا </p><p>para3</p>";
$result = preg_replace("~\p{Arabic}~u", "<p class=\"foo\">", $str, 1);
echo $result;
//output
<p>para 1</p><p> <p class="foo">ور سنا کنجڑا </p><p>para3</p>
将找到的字符分组。
$str = "<p>para 1</p><p> ہور سنا کنجڑا </p><p>para3</p>";
$result = preg_replace("~(\p{Arabic})~u", "<p class=\"foo\">", $str, 1);
echo $result;
()
捕获找到的阿拉伯字符。
将其添加回替换字符串。
正则表达式演示:https://regex101.com/r/yN5vW3/1 vs. https://regex101.com/r/yN5vW3/2
PHP 演示:https://eval.in/537056
preg_replace()
不是 "cut" 字符串的第一个字母。它用您作为第二个参数传递给它的字符串替换它。这就是 preg_replace()
谋生的方式;它替换了字符串片段:-)
有几种方法可以告诉它你在做什么。例如,您可以在 replacement() 字符串中使用 sub-string that matches:
$result = preg_replace("~<p>(\p{Arabic})~u", '<p class="foo">', $str, 1);
或者您可以使用 assertion:
$result = preg_replace("~<p>(?=\p{Arabic})~u", '<p class="foo">', $str, 1);
无论如何,当段落包含阿拉伯语单词时,您可能需要将 <p>
替换为 <p class="foo">
。我上面建议的代码更改已经使用了这个假设。