как найти значение в строке в php - PullRequest
1 голос
/ 18 июня 2010

Мое значение хранится в строке внутри ().Мне нужно вернуть это значение, чтобы проверить, пусто ли оно.

$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.

Ответы [ 7 ]

2 голосов
/ 18 июня 2010
$variable = "My Link (55) plus more text";
preg_match('/\((.*?)\)/',$variable,$matches);

$value = $matches[1];
echo $value;
0 голосов
/ 18 июня 2010

Собрав все это вместе, из примера ясно, что 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 Baker ' answer (извините, пока у вас нет этих 50 повторений :() - если вы работаете в среде, где error_reporting включает E_NOTICE и если проверенная строка взята из ненадежный источник, тогда $matches[1] выдаст уведомление, когда нет ни одного паратеза. Просто хотел бы указать на это.

0 голосов
/ 18 июня 2010

Это:

<?php
$str = "blah blah blah blah blah blah blah (testing)blah blah blah blah blah ";

echo preg_filter("/.*(\(.*?\)).*/","\\1",$str);
?>

Будет выводить (тестирование).Надеюсь, это то, что вы искали: о)

0 голосов
/ 18 июня 2010
if(strpos($string,')')-strpos($string,'(')==1)){
  #empty
}

чтобы вернуть строку

$newstring = substr($string,strpos($string,'('),strpos($string,')')-strpos($string,'('));
0 голосов
/ 18 июня 2010

Вы ищете значение строки или просто проверяете, является ли она пустой?

Если вы проверяете, является ли строка пустой, попробуйте

return empty($mystring);
0 голосов
/ 18 июня 2010

Вы можете использовать preg_match, чтобы извлечь значение из вашей строки. Но если вам просто нужно знать, является ли значение пустым, проверка того, содержит ли ваша строка (), должна работать так же хорошо.

0 голосов
/ 18 июня 2010

Ваш вопрос не совсем имеет смысла - хотя вам стоит взглянуть на использование instr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...