Мое значение хранится в строке внутри (). Я должен возвратить это значение, чтобы проверить, пусто ли это.
$variable = "<a href=\"http://www.link-url.ext\">My Link</a> (55)";
$value = "55"; // how do I get the value?
if($value < 1) {
// no link
} else {
// show link
}
Этот код использовался бы для показа ссылок без сообщений в них в Wordpress.
$variable = "My Link (55) plus more text";
preg_match('/\((.*?)\)/',$variable,$matches);
$value = $matches[1];
echo $value;
if(strpos($string,')')-strpos($string,'(')==1)){
#empty
}
, чтобы вернуть строку
$newstring = substr($string,strpos($string,'('),strpos($string,')')-strpos($string,'('));
Это:
<?php
$str = "blah blah blah blah blah blah blah (testing)blah blah blah blah blah ";
echo preg_filter("/.*(\(.*?\)).*/","\\1",$str);
?>
Будет выводить (тестирование). Надеюсь, это то, что вы искали: o)
Ваш вопрос не совсем понятен - хотя вам следует использовать instr
Вы можете использовать preg_match
для извлечения значения из вашей строки. Но если вам просто нужно узнать, пустое ли значение, то проверка, содержит ли ваша строка ()
, будет работать так же хорошо.
Вы ищете значение строки или просто проверяете, пуста ли она?
Если вы проверяете, пуста ли строка, попробуйте
return empty($mystring);
Собирая все это вместе, из примера ясно, что InnateDev намеревается проверять на положительных числовых значениях в скобках. На мой взгляд, самый безопасный способ сделать это:
$testString = "<a href=\"http://www.link-url.ext\">My Link</a> (55)";
$matches = array();
/* Assuming here that they never contain negative values e.g. (-55) */
preg_match('/\((\d*?)\)/s', $testString, $matches);
$hasComments = false;
if (count($matches) >= 1) // * Note A
{
$hasComments = $matches[1] > 0;
}
if ($hasComments)
{
// link
}
else
{
// no link
}
Примечание A: Возможно, это избыточно, и в этом случае вы можете проигнорировать его - это также можно сделать как комментарий к Mark Бейкер ответ (извините, у вас еще нет этих 50 представителей :() - если вы работаете в среде, где error_reporting включает E_NOTICE , и если проверяемая строка поступает из ненадежного источника, то $ match [1]
вызовет уведомление, если скобки отсутствуют. Просто хочу указать на это.