-3

我正在搜索正则表达式以查找文本中最后出现的空格,但我不想从 HTML 标记中查找空格。

"This is a string with <strong>some</strong> html in it"

正则表达式应该找到的空间是 和 之间的in空间it。那个正则表达式并不难。相同的正则表达式也可以在这里工作:

"This is a string with <strong>some</strong> html in <a href="">the end</a>"

空格现在将位于和之间的 HTML 中theend好的!)

但是当我的字符串是:

"This is a string with <strong>some</strong> html in the <a href="">end</a>"

那么空格应该在 and 之间the<a不是<aand之间href="">end<a>

有人有什么想法吗?

4

1 回答 1

3

更新此答案,因为有关要求的更多信息曝光。

strip_tags()strrpos()substr()函数的组合可以解决问题。首先使用 strip_tags() 函数清除 HTML。然后,您将留下文本并可以将其分解以找到最后一个单词,然后使用 strrpos() 查找该单词在原始文本中的位置。

$stringToken = explode( ' ', strip_tags( $str ) );
// Find the second-to-last word in the string.
$word = $stringToken[ count( $string ) - 2 ];

// Use $word to find its position within the original HTML-encoded string.
$wordPosition = strrpos( $str, $word );

if( $wordPosition !== false )
{
    $finalSpace = strpos( $str, ' ', $wordPosition );
    $lastSpacePrefix = substr( $str, 0, $finalSpace );
    $lastSpaceSuffix = substr( $str, $finalSpace + 1 );
    $newStr = sprintf( "%s%s%s", $lastSpacePrefix, $finalSpaceSub, $lastSpaceSuffix );
}
于 2012-08-23T13:58:17.560 回答