-1

我需要分隔一个字符串(它是 html),我需要提取一个子字符串,但我只有一个函数来分隔左侧:

function ddd($str, $sLeft, $sRight)
{
$pleft = strpos($str, $sLeft, 0);
$pright = strpos($str, $sRight, $pleft + strlen($sLeft));
return (substr($str, $pleft + strlen($sLeft), ($pright - ($pleft + strlen($sLeft)))));
}

但我需要从右边开始($sRight)并在 $sLeft 结束。谢谢!

4

1 回答 1

1

如果我理解正确,您需要在左侧和右侧搜索字符串。如果是这种情况,您可以使用此功能

PHP

<?php

// Function from php.net, see the link above.
// Starts searching the value from the right side
// of the string, returning the pos
function backwardStrpos($haystack, $needle, $offset = 0){
    $length = strlen($haystack);
    $offset = ($offset > 0)?($length - $offset):abs($offset);
    $pos = strpos(strrev($haystack), strrev($needle), $offset);
    return ($pos === false) ? (false) : ($length - $pos - strlen($needle));
}

$string = 'My string is this, and it is a good dialog';
echo backwardStrpos($string, "i"); // outputs 37
echo strpos($string, "i", 0);      // outputs 6

?>

输出的图解版本:

在此处输入图像描述


已编辑

您刚刚发表了与您正在尝试做的事情相关的评论。

为此,您可以使用PHP strip_tags

<?php

$str = '<div><span class="some style bla bla assd dfsdf">ImportantText</span>';

echo strip_tags($str); //outputs: ImportantText

?>

已编辑

要在 HTML 标记之间提取文本:

<?php

function getTextBetweenTags($string, $tagname) {
    $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
    preg_match($pattern, $string, $matches);
    return $matches[1];
}

$str = '<div><span class="some style bla bla assd dfsdf">ImportantText</span>';
$txt = getTextBetweenTags($str, "span");
echo $txt; // outputs: ImportantText

?>

这来自一个同胞的stackoverflow!关联

于 2012-05-15T12:31:49.277 回答