¿Cómo buscar texto usando php?
Algo así como:
<?php
$text = "Hello World!";
if ($text contains "World") {
echo "True";
}
?>
Excepto la sustitución if ($text contains "World") {
con una condición de trabajo.
¿Cómo buscar texto usando php?
Algo así como:
<?php
$text = "Hello World!";
if ($text contains "World") {
echo "True";
}
?>
Excepto la sustitución if ($text contains "World") {
con una condición de trabajo.
Lo que se necesita es strstr()
(o stristr()
, como señaló LucaB). Utilizar de esta manera:
if(strstr($text, "world")) {/* do stuff */}
strpos o stripos es mejor para el caso de uso dado por el OP - strstr toma todas las molestias de construir una nueva cadena, solo para ser desechado ... –
Agregando al comentario de Paul, del manual de PHP para [ 'strstr()'] (http://www.php.net/manual/en/function.strstr.php): "Si solo quiere determinar si una aguja en particular se encuentra en el pajar, use la más rápida y con menos memoria. función 'strpos()' en su lugar. " – BoltClock
Bueno, en realidad, es una microoptimización irrazonable utilizar strpos sobre Strstr dado el ejemplo original. La secuencia devuelta se desperdicia, pero basar la decisión en el "rendimiento" para una búsqueda de texto * single * no parece sensato. – mario
Esto podría ser lo que buscas:
<?php
$text = 'This is a Simple text.';
// this echoes "is is a Simple text." because 'i' is matched first
echo strpbrk($text, 'mi');
// this echoes "Simple text." because chars are case sensitive
echo strpbrk($text, 'S');
?>
lo es?
O tal vez esto:
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Note our use of ===. Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
} else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
}
?>
O incluso este
<?php
$email = '[email protected]';
$domain = strstr($email, '@');
echo $domain; // prints @example.com
$user = strstr($email, '@', true); // As of PHP 5.3.0
echo $user; // prints name
?>
Usted puede leer todo acerca de ellos en la documentación aquí:
en mi strstr dictamen () es mejor que strpos(). porque strstr() es compatible tanto con PHP 4 como con PHP 5. pero strpos() solo es compatible con PHP 5. Tenga en cuenta que parte de los servidores no tienen PHP 5
Uhm - PHP5 se lanzó por primera vez en 2004. Si la compatibilidad con PHP4 es realmente un problema, le sugiero que cambie a una empresa de alojamiento diferente. – Edward
Si está buscando un algoritmo para clasificar los resultados de búsqueda según sobre la relevancia de las palabras múltiples, aquí viene una manera rápida y fácil de generar resultados de búsqueda solo con PHP.
Aplicación del modelo de espacio vectorial en PHP
function get_corpus_index($corpus = array(), $separator=' ') {
$dictionary = array();
$doc_count = array();
foreach($corpus as $doc_id => $doc) {
$terms = explode($separator, $doc);
$doc_count[$doc_id] = count($terms);
// tf–idf, short for term frequency–inverse document frequency,
// according to wikipedia is a numerical statistic that is intended to reflect
// how important a word is to a document in a corpus
foreach($terms as $term) {
if(!isset($dictionary[$term])) {
$dictionary[$term] = array('document_frequency' => 0, 'postings' => array());
}
if(!isset($dictionary[$term]['postings'][$doc_id])) {
$dictionary[$term]['document_frequency']++;
$dictionary[$term]['postings'][$doc_id] = array('term_frequency' => 0);
}
$dictionary[$term]['postings'][$doc_id]['term_frequency']++;
}
//from http://phpir.com/simple-search-the-vector-space-model/
}
return array('doc_count' => $doc_count, 'dictionary' => $dictionary);
}
function get_similar_documents($query='', $corpus=array(), $separator=' '){
$similar_documents=array();
if($query!=''&&!empty($corpus)){
$words=explode($separator,$query);
$corpus=get_corpus_index($corpus);
$doc_count=count($corpus['doc_count']);
foreach($words as $word) {
$entry = $corpus['dictionary'][$word];
foreach($entry['postings'] as $doc_id => $posting) {
//get term frequency–inverse document frequency
$score=$posting['term_frequency'] * log($doc_count + 1/$entry['document_frequency'] + 1, 2);
if(isset($similar_documents[$doc_id])){
$similar_documents[$doc_id]+=$score;
}
else{
$similar_documents[$doc_id]=$score;
}
}
}
// length normalise
foreach($similar_documents as $doc_id => $score) {
$similar_documents[$doc_id] = $score/$corpus['doc_count'][$doc_id];
}
// sort fro high to low
arsort($similar_documents);
}
return $similar_documents;
}
En su caso
$query = 'world';
$corpus = array(
1 => 'hello world',
);
$match_results=get_similar_documents($query,$corpus);
echo '<pre>';
print_r($match_results);
echo '</pre>';
RESULTADOS
Array
(
[1] => 0.79248125036058
)
palabras coincidentes múltiple contra FRASES DE MÚLTIPLES
$query = 'hello world';
$corpus = array(
1 => 'hello world how are you today?',
2 => 'how do you do world',
3 => 'hello, here you are! how are you? Are we done yet?'
);
$match_results=get_similar_documents($query,$corpus);
echo '<pre>';
print_r($match_results);
echo '</pre>';
RESULTADOS
Array
(
[1] => 0.74864218272161
[2] => 0.43398500028846
)
de How do I check if a string contains a specific word in PHP?
/* https://ideone.com/saBPIe */
function search($search, $string) {
$pos = strpos($string, $search);
if ($pos === false) {
return "not found";
} else {
return "found in " . $pos;
}
}
echo search("world", "hello world");
Insertar línea de PHP:
body, html, iframe {
width: 100% ;
height: 100% ;
overflow: hidden ;
}
<iframe src="https://ideone.com/saBPIe" ></iframe>
Reinventando mucho la rueda? – MJoraid
Usted puede encontrar [ 's ($ str) -> contiene ('Mundo')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/ src/Str.php # L93) y ['s ($ str) -> containsIgnoreCase ('World')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str .php # L105) útil, como se encuentra en [esta biblioteca independiente] (https://github.com/delight-im/PHP-Str). – caw