Php 如何在preg_replace()函数中使用substr()函数?
这就是我到目前为止所拥有的,但无论我如何尝试,我的Php 如何在preg_replace()函数中使用substr()函数?,php,regex,html-parsing,Php,Regex,Html Parsing,这就是我到目前为止所拥有的,但无论我如何尝试,我的专辑内容都不会被substr()截断 $gallery=preg\u replace(“/()(.*?)()/e',“$1.”substr(\“$2\”,0,50)。“$3',$gallery); 更新: 结果发现我的类名不正确,我的正则表达式似乎也能工作。 我只需执行另一个str_replace()即可取消对输出的转义 $gallery = preg_replace('/(<div class="album-desc">)(.*?
专辑内容都不会被substr()
截断
$gallery=preg\u replace(“/()(.*?)()/e',“$1.”substr(\“$2\”,0,50)。“$3',$gallery);
更新:
结果发现我的类名不正确,我的正则表达式似乎也能工作。
我只需执行另一个str_replace()即可取消对输出的转义
$gallery = preg_replace('/(<div class="album-desc">)(.*?)(<\/div>)/e', "'$1' . substr(\"$2\", 0, 50) . '$3'", $gallery);
$gallery = str_replace('\"album-desc\"', '"album-desc"', $gallery);
$gallery=preg\u replace(“/()(.*?)()/e',“$1.”substr(\“$2\”,0,50)。“$3',$gallery);
$gallery=str_replace(“\”相册说明“,“”相册说明“,$gallery);
修改前的输出:
<a href="..." class="album">
<div class="album-content"><p class="album-title">Album 1</p>
<div class="album-desc"><p>This will be truncated by substr().</p></div>
</div>
<img src="..." />
</a>
无论如何,谢谢大家 使用preg\u replace\u callback()
必须是
..., "'$1'" . substr("$2", 0, 50) . "'$3'", ...
使用字符串的substr“outside”。请发布一些前后内容,以便我们更好地了解您想要做什么。您不能使用substr()
作为替换的一部分string@MathieuImbert不过,它现在似乎确实起作用了。请看我的更新。这很奇怪。你能提供一个完整的测试用例吗?对于$gallery
示例和结果输出,请不要使用正则表达式解析HTML。无法使用正则表达式可靠地解析HTML。一旦HTML改变了您的预期,您的代码就会被破坏。有关如何使用PHP模块正确解析HTML的示例,请参阅。我试过你的方法,但没用。谢谢!我想我将来会用这个。
$replace = preg_replace_callback('/(asd)f/i', function($matches) {
$matches[1] = substr($matches[1], 0, 2);
return $matches[1];
}, 'asdf');
..., "'$1'" . substr("$2", 0, 50) . "'$3'", ...