-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

?>

これは仲間のスタックオーバーフローから来ました! リンク

于 2012-05-15T12:31:49.277 に答える