Ir para o conteúdo
Anonym

Apagar texto entre duas variaveis

Mensagens Recomendadas

Anonym    0
Anonym

é assim

imaginem o texto 'Ola como estas'

como faço para apagar tudo o que esteja entre 'ola' e 'estas' ??

ou seja apagava o 'como'

:P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Como normalmente acontece em programação, tens mais que uma maneira de fazer isso. Uma delas seria

$str = "ola como estas";
$arr = explode(" ", $str);
$novastring = "$arr[0] $arr[2]";

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

O script acima funciona dado que queres apagar tudo entre o primeiro indice, que é zero e o último que podes obter chamando a função count() e subtraíndo uma unidade. Se quiseres apagar entre dois pontos que não o primeiro e o último indice então terás de percorrer o vector para encontrares os indices correctos.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Anonym    0
Anonym

Repara:

Autor: Forrester, Anthony

Título: Take 3 : Student`s Book 9º Ano 

Editor: Lisboa Editora 

ISBN: 972-680-201-6

 

Autor: Oliveira, Maria Do Carmo Ordonhas Ferrão De

Título: Webline 8º Ano 

Editor: Lisboa Editora 

ISBN: 972-680-407-8

 

Autor: Paixão, Maria Da Conceição Bravo Ludovice

Título: Guiões para Leitura Orientada da Obra a Menina do Mar 

Editor: Lisboa Editora 

ISBN: 972-680-275-X

 

Autor: Vidal, Beatriz

Título: Educação Visual e Tecnológica 5º/6º Anos 

Editor: Lisboa Editora 

ISBN: 972-680-457-4

Autor: Bolton, David

Título: Basic Working Grammar 2º/3º Ciclos 

Editor: Lisboa Editora 

ISBN: 972-680-198-2

O que eu queria mesmo era copiar os dados que estão á frente de Autor, Título, Editor, ISBN

Então optei por tentar eliminar o q nao interessava.. mas se alguem conhecer uma maneira melhor

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

Expressões regulares era o que usava, mas parsing simples deve ser mais fácil, no entanto não sei que funções de tratamento de strings existem em PHP...

Um explode por ":" permite separar a string "Autor: Autor: Bolton, David" em duas strings, "Autor" e " Bolton, David", um trim, dá para apagar os espaços no inicio e no fim da segunda string, a que tem o nome do autor.

O texto está em ficheiro? Não sei se existe alguma forma de separar um texto por linhas em PHP, isto é, alguma função que faça isso automáticamente, mas se houver tens o problema resolvido.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
TheDark    0
TheDark

Não sei se existe alguma forma de separar um texto por linhas em PHP, isto é, alguma função que faça isso automáticamente, mas se houver tens o problema resolvido.

Provavelmente, um explode com "\n"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

Não assumi que isso funcionasse porque não sei de onde são obtidos os dados e nem sempre o \n é usado para separar linhas, mas é uma solução.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Se o padrão é sempre o mesmo podes fazer o seguinte com expressões regulares:

<?php

$dados = "Autor: Forrester, Anthony
Título: Take 3 : Student`s Book 9º Ano 
Editor: Lisboa Editora 
ISBN: 972-680-201-6

Autor: Oliveira, Maria Do Carmo Ordonhas Ferrão De
Título: Webline 8º Ano 
Editor: Lisboa Editora 
ISBN: 972-680-407-8";

$dados = explode("\n", $dados);
$output = array();

for ($i = 0; $i < count($dados); $i++) {
$output[count($output)] = preg_replace("#^(Autor|Título|Editor|ISBN):\s(.+?)#i", "\\2", $dados[$i]);
}

echo "<pre>";
print_r($output);
echo "</pre>";

?>

Array
(
    [0] => Forrester, Anthony
    [1] => Take 3 : Student`s Book 9º Ano 
    [2] => Lisboa Editora 
    [3] => 972-680-201-6
    [4] => 
    [5] => Oliveira, Maria Do Carmo Ordonhas Ferrão De
    [6] => Webline 8º Ano 
    [7] => Lisboa Editora 
    [8] => 972-680-407-8
)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

nazgulled

porque $output[count($output)] e não $output[] ?

Porque a última vez que programei PHP a sério já faz mais de um ano e o que mais programei neste último ano foi em C.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Assumindo que a estrutura do ficheiro é algo como:

Detalhe1: Olá adfasdfa

Detalhe2: adfadfadf

Detalhe1: Olá adsfadfasdfasdfafds

Detalhe2: Olá adsfasfdafa

Ou seja:

{Nome do detalhe}: {Valor do detalhe} é a estrutura de cada detalhe, cada livro é um conjunto de detalhes separados por \n e o ficheiro é um conjunto de livros separados por \n\n.

Atenção que tenho um str_replace() para tornar isto portável entre Mac, Windows e Linux, por causa do line feeds (em Linux é \n, em Mac é \r e em Windows é em \r\n).

$dados = "Autor: Forrester, Anthony
Título: Take 3 : Student`s Book 9º Ano
Editor: Lisboa Editora
ISBN: 972-680-201-6

Autor: Oliveira, Maria Do Carmo Ordonhas Ferrão De
Título: Webline 8º Ano
Editor: Lisboa Editora
ISBN: 972-680-407-8";

$dados = str_replace("\r", "\n", str_replace("\r\n", "\n", $dados));
$obras = explode("\n\n", $dados);
foreach($obras as $k => $v) $obras[$k] = explode("\n", $v);

foreach($obras as $k => $obra){
    foreach($obra as $detalhe){
       $dummy = explode(":", $detalhe, 2);
       $obraa[$dummy[0]] = $dummy[1];
    }
    $obras[$k] = $obraa;
}

var_dump($obras);

Não testado.

EDIT: Esqueci-me de dizer, a variável $obras fica assim:

array(

    {id do livro} => array(

                              {detalhe} => {valor},

                              {detalhe} => {valor}),

    {id do livro} => array(

                              {detalhe} => {valor},

                              {detalhe} => {valor})

);

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade